package com.zjitc.service;

import com.zjitc.common.ServerResponse;
import com.zjitc.pojo.Product;
import com.zjitc.pojo.User;
import com.zjitc.vo.PageModel;
import com.zjitc.vo.product.Prestrain;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * Create By IntelliJ IDEA
 *
 * @author: myq
 * @create-Time: 2017/11/15  10:57
 */
public interface ProductService {

  /**
   * 查看热门商品
   * @return
   */
  List<Product> findHots();

  /**
   * 查看最新商品
   * @return
   */
  List<Product> findNews();

  /**
   * 查看商品
   * @param pid
   * @return
   */
  Product findbyid(String pid);

  /**
   * this is user-defined Page Caching
   * @param count
   * @param pageid
   * @param cid
   * @return
   */
  PageModel findallProduct(String cid, int pageid, int count);

  /**
   * 分页查看所有商品
   * @param pageid
   * @param count
   * @return
   */
  PageModel<Product> findAllProduct(int pageid, int count);

  /**
   * 查看所有商品
   * @return
   */
  List<Product> findall();

  /**
   * 显示单个商品的详细信息
   * @param session
   * @param pid
   * @return
   */
  ModelAndView displaymsg(HttpSession session, String pid);

  /**
   * update product
   * @param product
   * @return
   */
  int updateProduct(Product product);

  /**
   * 添加商品
   * @param product
   * @return
   */
  int addproduct(Product product);

  /**
   * 删除商品
   * @param pid
   */
  void deleteByPid(String pid);

  /**
   * 更新库存
   * @param pid
   * @param count
   * @return
   */
  int updateInventory(String pid, Integer count);

  /**
   * 添加收藏
   * @param pid
   * @param user
   * @return
   */
  ServerResponse updateCollect(String pid, User user);

  /**
   * 新加的  预加载商品
   * @return
   */
    List<Prestrain> prestrainProduct();

  /**
   * 新加的  找收藏
   * @param uid
   * @return
   */
  List<Product> findMyCollect(String uid);

  /**
   * 整合  初始化商品列表
   * @param cid
   * @param pageid
   * @param session
   * @param count
   * @return
   */
  ModelAndView initProductList(String cid, Integer pageid, HttpSession session, int count);

  ModelAndView initFuzzyList(String fuzzy, HttpSession session, int pageid,int count);

  /**
   * 新加  查询商品数量
   * @return
   */
  int findcount();


  /**
   * 上下架商品
   * @param pid
   * @return
   */
    String updateState(String pid);

  /**
   * 简化模糊查询
   * @param name
   * @return
   */
  List<Product> FuzzyProduct(String name);

  /**
   * 选择分类查看
   * @param cid
   * @return
   */
  List<Product> changeCategory(String cid);

  /**
   * 后台管理初始化数据
   *
   * @return
   */
  Integer[] initAdminMain();
}
